#!/bin/bash

# 获取jar包路径参数和命令
COMMAND=$1
JAR_PATH=$2

# 检查是否提供了正确的参数
if [ -z "$COMMAND" ] || [ -z "$JAR_PATH" ]; then
    echo "用法: $0 {start|stop|restart|status} /path/to/your/app.jar"
    exit 1
fi

# 从路径中提取jar包名称（不包括扩展名）
PROJECT_NAME=$(basename "$JAR_PATH" .jar)
APP_NAME=$PROJECT_NAME.jar

echo "PROJECT_NAME：$PROJECT_NAME"
echo "APP_NAME：$APP_NAME"

#启动方法
start(){
  # 检查应用是否已经在运行
  PID=$(jps -l | grep "$JAR_PATH" | awk '{print $1}')
  if [ -n "$PID" ]; then
    echo "$APP_NAME 已经在运行, 进程ID为: $PID"
  else
    echo "启动 $APP_NAME..."
#    nohup java -jar -DAPP_NAME=${PROJECT_NAME} -Xmx512m -Xms512m ${JAR_PATH} >/dev/null 2>&1 &
    nohup java -jar -DAPP_NAME=${PROJECT_NAME} ${JAR_PATH} >/dev/null 2>&1 &
    NEW_PID=$(jps -l | grep "$JAR_PATH" | awk '{print $1}')
    echo "$APP_NAME 已启动成功, 新的进程ID为: $NEW_PID"
  fi
}

#停止方法
stop(){
  # 检查应用是否已经在运行
  PID=$(jps -l | grep "$JAR_PATH" | awk '{print $1}')
  if [ -n "$PID" ]; then
    kill -9 $PID
    echo "${APP_NAME} 已停止！进程ID为：$PID"
  else
    echo "${APP_NAME} 没有运行！"
  fi
}

#运行状态
status(){
  # 检查应用是否已经在运行
  PID=$(jps -l | grep "$JAR_PATH" | awk '{print $1}')
  if [ -n "$PID" ]; then
    echo "${APP_NAME} 正在运行。进程ID为：$PID"
  else
    echo "${APP_NAME} 没有运行。"
  fi
}

#重启
restart(){
  stop
  echo "${APP_NAME} 正在重启..."
  sleep 3
  start
}

#根据输入参数，选择执行对应方法，不输入则执行使用说明
case $COMMAND in
  start)
    start
    ;;
  stop)
    stop
    ;;
  status)
    status
    ;;
  restart)
    restart
    ;;
  *)
    echo "未知命令: $COMMAND"
	  echo "请使用: {start|stop|restart|status}"
	  ;;
esac



